home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / g_man / cat3 / OpenGL-ftn / fglvertexpointer.z / fglvertexpointer
Encoding:
Text File  |  2001-04-17  |  15.4 KB  |  199 lines

  1.  
  2.  
  3.  
  4. ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))           OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee           ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr - define an array of vertex data
  10.  
  11.  
  12. FFFFOOOORRRRTTTTRRRRAAAANNNN SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      SUBROUTINE ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr( INTEGER*4 _s_i_z_e,
  14.                                   INTEGER*4 _t_y_p_e,
  15.                                   INTEGER*4 _s_t_r_i_d_e,
  16.                                   CHARACTER*8 _p_o_i_n_t_e_r )
  17.  
  18.  
  19. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  20.      _s_i_z_e     Specifies the number of coordinates per vertex; must be 2, 3, or
  21.               4. The initial value is 4.
  22.  
  23.      _t_y_p_e     Specifies the data type of each coordinate in the array.
  24.               Symbolic constants GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, and GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE are
  25.               accepted. The initial value is GGGGLLLL____FFFFLLLLOOOOAAAATTTT.
  26.  
  27.      _s_t_r_i_d_e   Specifies the byte offset between consecutive vertexes. If
  28.               _s_t_r_i_d_e is 0, the vertexes are understood to be tightly packed in
  29.               the array. The initial value is 0.
  30.  
  31.      _p_o_i_n_t_e_r  Specifies a pointer to the first coordinate of the first vertex
  32.               in the array. The initial value is 0.
  33.  
  34. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  35.      ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr specifies the location and data format of an array of
  36.      vertex coordinates to use when rendering.  _s_i_z_e specifies the number of
  37.      coordinates per vertex and _t_y_p_e the data type of the coordinates. _s_t_r_i_d_e
  38.      specifies the byte stride from one vertex to the next allowing vertexes
  39.      and attributes to be packed into a single array or stored in separate
  40.      arrays.  (Single-array storage may be more efficient on some
  41.      implementations; see ffffggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss.)  When a vertex array is
  42.      specified, _s_i_z_e, _t_y_p_e, _s_t_r_i_d_e, and _p_o_i_n_t_e_r are saved as client-side
  43.      state.
  44.  
  45.      To enable and disable the vertex array, call ffffggggllllEEEEnnnnaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee and
  46.      ffffggggllllDDDDiiiissssaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee with the argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY. If enabled, the
  47.      vertex array is used when ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or
  48.      ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt is called.
  49.  
  50.      Use ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss to construct a sequence of primitives (all of the same
  51.      type) from prespecified vertex and vertex attribute arrays.  Use
  52.      ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt to specify primitives by indexing vertexes and vertex
  53.      attributes  and ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss to construct a sequence of primitives by
  54.      indexing vertexes and vertex attributes.
  55.  
  56. NNNNOOOOTTTTEEEESSSS
  57.      ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is available only if the GL version is 1.1 or greater.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))           OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee           ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      The vertex array is initially disabled and isn't accessed when
  75.      ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss or ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss is called.
  76.  
  77.      Execution of ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is not allowed between the execution of
  78.      ffffggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ffffggggllllEEEEnnnndddd, but an error may or
  79.      may not be generated. If no error is generated, the operation is
  80.      undefined.
  81.  
  82.      ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is typically implemented on the client side.
  83.  
  84.      Vertex array parameters are client-side state and are therefore not saved
  85.      or restored by ffffggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ffffggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb.  Use ffffggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb
  86.      and ffffggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb instead.
  87.  
  88. EEEERRRRRRRROOOORRRRSSSS
  89.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_i_z_e is not 2, 3, or 4.
  90.  
  91.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is is not an accepted value.
  92.  
  93.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e is negative.
  94.  
  95. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  96.      ffffggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY
  97.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____SSSSIIIIZZZZEEEE
  98.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE
  99.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE
  100.      ffffggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR
  101.  
  102.  
  103. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  104.      On RealityEngine, RealityEngine2, and VTX systems, do not enable or
  105.      disable GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY,
  106.      GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT,
  107.      GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY,GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY,
  108.      GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
  109.      between a call to ffffggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ffffggggllllEEEEnnnnddddLLLLiiiisssstttt.
  110.      Instead, enable or disable before the call to ffffggggllllNNNNeeeewwwwLLLLiiiisssstttt.
  111.  
  112.      On InfiniteReality systems it is particularly important to minimize the
  113.      amount of data transferred from the application to the graphics pipe,
  114.      since the host-to-pipe bandwidth limit can cause a performance
  115.      bottleneck.  One way to reduce the amount of data transferred per vertex
  116.      is to use properly-aligned byte and short data types whenever possible.
  117.      Accordingly, the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension on InfiniteReality systems
  118.      has been optimized for vertex information packed into the following data
  119.      structures.  (Note: v represents vertex coordinates, c represents color
  120.      components, n represents normal coordinates, and t represents texture
  121.      coordinates.  Normals must have unit length.)
  122.  
  123.           struct {GLfloat v[3];}
  124.           struct {GLubyte c[4]; GLfloat v[3];}
  125.           struct {GLshort n[3]; GLfloat v[3];}
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))           OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee           ffffggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  137.  
  138.  
  139.  
  140.           struct {GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  141.           struct {GLshort t[2]; GLfloat v[3];}
  142.           struct {GLshort t[2]; GLubyte c[4]; GLfloat v[3];}
  143.           struct {GLshort t[2]; GLshort n[3]; GLfloat v[3];}
  144.           struct {GLshort t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  145.           struct {GLfloat t[2]; GLfloat v[3];}
  146.           struct {GLfloat t[2]; GLubyte c[4]; GLfloat v[3];}
  147.           struct {GLfloat t[2]; GLshort n[3]; GLfloat v[3];}
  148.           struct {GLfloat t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  149.  
  150.      Application-specific fields may be added to these structures, provided
  151.      that all the fields described above retain their relative order and word
  152.      alignment.
  153.  
  154.      An additional constraint applies when ffffggggllllTTTTeeeexxxxGGGGeeeennnn is being used.  The
  155.      implementation normally generates all four texture coordinates in
  156.      parallel, and must take special action to generate just a subset of the
  157.      four coordinates.  Therefore performance is best when none of the texture
  158.      coordinates are being generated, or when all of them are being generated.
  159.      For example, when using 2D texturing (generating s and t coordinates) it
  160.      will be faster to enable texture coordinate generation for the r and q
  161.      coordinates as well as s and t.  Choose a texture generation mode of
  162.      GGGGLLLL____OOOOBBBBJJJJEEEECCCCTTTT____LLLLIIIINNNNEEEEAAAARRRR and use the plane equations (0,0,0,0) and (0,0,0,1) for
  163.      r and q, respectively.
  164.  
  165.      Using these structures on InfiniteReality systems can improve performance
  166.      considerably, compared to structures in which all values are single-
  167.      precision floating point.
  168.  
  169.  
  170. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  171.      ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ffffggggllllCCCCoooolllloooorrrrPPPPooooiiiinnnntttteeeerrrr, ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss,
  172.      ffffggggllllDDDDrrrraaaawwwwRRRRaaaannnnggggeeeeEEEElllleeeemmmmeeeennnnttttssss, ffffggggllllEEEEddddggggeeeeFFFFllllaaaaggggPPPPooooiiiinnnntttteeeerrrr, ffffggggllllEEEEnnnnaaaabbbblllleeee, ffffggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv,
  173.      ffffggggllllIIIInnnnddddeeeexxxxPPPPooooiiiinnnntttteeeerrrr, ffffggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss, ffffggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr,
  174.      ffffggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb, ffffggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb, ffffggggllllTTTTeeeexxxxCCCCoooooooorrrrddddPPPPooooiiiinnnntttteeeerrrr
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.